Printing devices are devices that can print viewable content on physical media, such as paper or transparent sheets. Printing devices include printers and multi-function peripherals (MFPs) such as the Ricoh Aficio 5560 system. Typically, a printing device receives data from a computer via a network or cable. The printing device prints text and/or images that are represented by the data. Image-forming devices include printing devices and other devices that can form stored images, such as scanners and cameras.
Different printing devices may offer different features. Different printing devices may have different characteristics and capabilities. It is often useful for a client, such as an application program (e.g., a word processor) or print driver, to be able to obtain information about a printing device with which that client intends to interact. For example, if a printing device can print in either black and white or in color, then it may be useful for a client to know that the printing device has such a capability. Knowing that a printing device has the ability to print in color might influence the kind of commands that the client sends to the printing device.
In order to enable clients to learn the features, characteristics, and capabilities of a printing device, some printing devices store (e.g., in volatile or non-volatile memory) metadata that indicates features, characteristics, and capabilities of those printing devices. A client can send, to such a printing device, a request for that printing device's metadata. The printing device can receive such a request and respond to the request by sending, to the client, the printing device's metadata (or a specifically requested portion thereof). The client can receive the metadata and use the metadata to customize the manner in which the client interacts with the printing device. Thus, a client can automatically learn about a printing device's features, characteristics, and capabilities.
A device's metadata might indicate information such as the device's manufacturer, the device's model, the device's Internet Protocol (IP) address(es), details about the device's configuration, etc. Under some circumstances, a client might be unable to interact in a desired manner with a printing device until the client has obtained at least some of the printing device's metadata.
In order to standardize communications between clients and devices, some devices now implement web services applications. Web services applications execute on a printing device and perform specific tasks. For example, one web services application on an MFP might perform printing tasks, while another web services application on that MFP might perform scanning tasks, while yet another web services application on that MFP might perform facsimile (“fax”) tasks. Web services applications and clients communicate with each other according to one or more web services protocols. For example, in order to obtain information about an MFP's printing capabilities, or to make use of those printing capabilities, a client might send, to the MFP's “print” web services application, an inquiry or command that is formatted according to a particular web service protocol.
Web services protocols are defined by the World Wide Web Consortium (“W3C”). W3C is an international consortium where member organizations, a full-time staff, and the public work together to develop standards for the World Wide Web and the Internet. The W3C defines a “web service” as a software system that is designed to support interoperable machine-to-machine interaction over a network. This definition encompasses many different systems, but in common usage, the term refers to those services that use SOAP-formatted Extensible Markup Language (“XML”) envelopes and that have their interfaces described by Web Services Description Language (“WSDL”). Web services allow devices and applications to communicate with each other over one or more networks without the intervention of any human being, while using the same suite of protocols (e.g., Hypertext Transfer Protocol (“HTTP”)) that a human being would use to communicate with such devices and applications over one or more networks. The specifications that define web services are intentionally modular, and, as a result, there is no one document that defines all web services. Instead, there are a few core specifications that are supplemented by other specifications as the circumstances and choice of technology dictate. The most common core specifications are SOAP, WSDL, WS-Security, and WS-ReliableExchange. Different specifications address different tasks and functions.
SOAP is an XML-based, extensible message envelope format, with bindings to underlying protocols (e.g., HTTP and Simple Mail Transfer Protocol (“SMTP”)). Using XML, SOAP defines how messages should be formatted, so that those messages are formatted in such a way that the recipients of those messages (devices and applications) can understand those messages. SOAP can be used to perform remote procedure calls, for example. WSDL is an XML format that allows web service interfaces to be described along with the details of those interfaces' bindings to specific protocols. WSDL is typically used to generate server and client code, and for configuration. WS-Security defines how to use XML encryption and XML signature in SOAP to secure message exchanges. WS-ReliableExchange is a protocol for reliable messaging between two web services.
Printing devices on which web services applications execute are often highly constrained in terms of resources such as memory and network bandwidth. Vendors constrain printing devices' resources in order to make the costs of the printing devices reasonable and competitive in consumers' eyes. Unfortunately, web services applications are relatively large consumers of these limited resources. The strain that web services applications put on printing devices' limited resources has been exacerbated recently by the proliferation of web services applications on such printing devices. Web services applications have especially proliferated in response to an industry effort to maintain backward compatibility with existing clients, as is discussed below.
As web services standards evolve, newer clients expect to be able to communicate with new printing devices using the newer and better protocols that are specified by those web services standards. However, at the same time, older clients, which were able to communicate with a vendor's old printing devices using older protocols that were specified by older web services standards, usually need to be able to continue to communicate with the vendor's new printing devices using those older protocols; the vendor's customers cannot be expected to upgrade all of their clients every time that a new web services standard becomes available. To serve the needs of diverse customers and those customers' clients of varying age and capability, vendors find themselves installing, on printing devices, multiple different versions of each specialized web service application. For example, a vendor might install, on its printing device multiple different versions of a “print” web services application, multiple different versions of a “scan” web services application, and multiple different versions of a “fax” web services application. When all of these web services applications execute concurrently, a large segments of the printing device's resources may be consumed. If the resource consumption is too great, then the printing device's performance can suffer as a result.
Based on the foregoing, there is a need to control, more efficiently, resources that are used by web services applications that execute on a printing device.